README.Unistrokes
-----------------

This file describes a development version of a Unistrokes recognizer for
the Newton computer.


Description
-----------

This program was written to test the feasibility of Unistroke recognition
on the current generation of Newton PDAs and to collect data on the
perfomance of the Newton in stroke collection and recognition.  It
has no other intended utility.  Read the Caveats section.

Information on Unistrokes
-------------------------
FTP: ftp.parc.Xerox.COM
Directory: /pub/unistrokes
Purpose: Public documentation for the unistrokes stylus system.
Maintainer: David Goldberg <goldberg@parc.xerox.com>


Screen Layout
-------------

The screen layout of this program from top to bottom has the following
elements:

++ Title:
-- The name of the application "Unistrokes Testbed".

++ Recognized text:
-- A line of text beginning with a ">" character which accumulates characters
recognized within the "Recognition rectangle".  If a stroke is detected
but not recognized either a '*' or '#' will be placed (which depends on
internal details of recognizer).

++ Recognition rectangle:
-- The area in which to make a unistroke for recognition.  The unistroke
needs to be made entirely within this rectangle.

++ Shift button:
-- A check box button, which when tapped will cause the next character
recognized to be capitalized.

++ Statistics area:
-- Two lines of text.  When the program starts, the first line has a
version number followed by build date and time, while the second line
has a copyright notice.  These are cleared when the first stroke is
detected in the "Recognition rectangle", unless the "Show Statistics"
button is checked.

An example of statistics display:
37 177 79 203,ink:8,pnts:30,ticks:15
(r)

37 177 79 203
-> first and last X, first and last Y coordinates.

ink:8
-> the stroke took about 8 twentieths of a second to write.

pnts:30
-> a total of 30 points returned by the Newton
         for the stroke.
		 
ticks:15
-> the recognition algorithm took 15/60 seconds.

(r)
-> an 'r' was recognized.

++ Erase button:
-- Resets the "Recognized text" line to ">".

++ Show Statistics button
-- Causes statistics to show up in "Statistics area".


Caveats:
--------

* Not well tested.

* Truncates strokes taking longer than 1.5 seconds.  Sometimes will recognize
  them, but unlikely for complex strokes.

* Sometimes misses on quick strokes, especially small ones.  Try an 'X'
  with a small, quickly drawn loop - it sometimes sees a 'V'.

* Only the author's strokes have been seen.

* Only tested on Newton MP 100, not MP 110.

* No doubt other problems exist.


Comments on findings:
---------------------

The Newton with interpreted NewtonScript is too slow to do a
point by point feature extraction on the collected points, so the
strokes were sampled about every 50 ms., leading to a lack of
robustness on quick, complex stokes.  On most strokes it did OK.
Your mileage may vary.

Apple is promising a faster code generator for NewtonScript and
perhaps a C compiler, but with no time frame.  At that time I may
try again.


Legal stuff
-----------

This program is Copyright ) 1994 by James Thiele. It may be distributed
freely as long as the program is unmodified and is accompanied by this
README file.

Because there are too many lawyers in the world, I add the following
statement:

This program is made available without any claim that it is suitable for
any use.  The author's liability is limited to what was charged for it
which was nothing.  It works OK on my MessagePad 100,
but I am not making any other statements of other systems it could or
should run on.


Author
------

You can let the author know what you think of this prgram by contacting him 
at:

James Thiele
jet@eskimo.com
73537,1460     on Compuserve (checked rarely)
JET1           on AOL        (checked rarely)

8217 5th Ave NE, #303
Seattle, WA  98115

(Addresses valid as of October 1994)